
/**
 * 依赖倒置原则
 * 依赖抽象，而非依赖依赖具体的实现
 */
// 依赖抽象：女朋友的标准
interface Girlfriend {
    age: number;
    height: number;
    cook(): void // 会做饭
}
// 林志玲
class LinChiling implements Girlfriend {
    age: number = 35;
    height: number = 178;
    cook() {
        console.log('泡面');
    }
}
// 韩妹妹
class HanMeimei implements Girlfriend {
    age: number = 35;
    height: number = 178;
    cook() {
        console.log('泡面');
    }
}
// 单身
class SingleDog {
    // Girlfriend：依赖的标准
    constructor(public girlfriend: Girlfriend) { }
}
// 依赖抽象，而不是具体的某个实现，传入的是依赖的抽象
// 我要的女盆友 age 和height 的标准，和会做饭cook
let dog1 = new SingleDog(new LinChiling());
let dog2 = new SingleDog(new HanMeimei());